Отображение картинок в табличном поле

Отображение картинок в колонках табличного поля имеет ряд особенностей.

Так, если табличное поле отображает таблицу значений или дерево значений, можно установить необходимой колонке табличного поля колонку картинки. Для этого необходимо в палитре свойств в свойстве "Данные картинки" колонки табличного поля указать имя колонки картинки(при этом соответствующая колонка автоматически добавится в таблицу или дерево значений), а в свойстве "Картинки строк" указать картинку - коллекцию, содержащую все необходимые картинки. Стоит отметить, что картинки, составляющие коллекцию, должны быть расположены горизонтально и иметь размер 16 x 16 точек. Далее, при заполнении таблицы значений или дерева значений необходимо в колонке картинки установить  индекс картинки в этой коллекции. Приведенный ниже пример показывает, как отобразить картинки в табличных полях, отображающих таблицу и дерево значений. В этом примере используется два табличных поля, каждое из табличных полей содержит по одной колонке - колонке картинки. Первое из них отображает таблицу значений (реквизит ТЗ) , а второе дерево значений (реквизит ДЗ).

 Заполнение источников данных происходит при обработке события ПередОткрытием() формы:

Копировать в буфер обмена
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
    Перем Стр, Стр1;

    // Заполнение таблицы значений
    Для Сч = 0 по 6 Цикл
        Стр = ТЗ.Добавить();
        Стр.Картинка = Сч;
    КонецЦикла;

    // Заполнение дерева значений
    Для Сч = 0 по 6 Цикл
        Стр = ДЗ.Строки.Добавить();
        Стр.Картинка = Сч;

       Для Сч1 = 0 по 2 Цикл
           Стр1 = Стр.Строки.Добавить();
           Стр1.Картинка = 1;
       КонецЦикла;

    КонецЦикла;

КонецПроцедуры

Также можно связать данные картинки колонки табличного поля с колонкой таблицы значений, содержащей собственно картинку. Для этого необходимо при заполнении таблицы значений присваивать картинки соответствующей колонке. Затем связать колонку таблицы значений с колонкой табличного поля, отображающей картинку. В приведенном ниже примере используется табличное поле ТабличноеПоле1 содержащее одну колонку (Колонка1), отображающую картинку.

Заполнение таблицы значений происходит при обработке события формы ПередОткрытием(). Сначала в таблицу значений (реквизит ТЗ) добавляется колонка картинки (Картинка), затем происходит заполнение таблицы значений. В конце осуществляется привязка колонки таблицы значений к колонке табличного поля. Для этого используется свойство ДанныеКартинки колонки табличного поля.

Копировать в буфер обмена
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)

   Перем Стр;

   ТЗ.Колонки.Добавить("Картинка");

   // Заполнение таблицы значений
   Для Сч = 0 по 10 Цикл

      Стр = ТЗ.Добавить();

      Если Сч % 2 = 0 Тогда

            Стр.Картинка = БиблиотекаКартинок.Справка;

          Иначе

            Стр.Картинка = БиблиотекаКартинок.Важно;

      КонецЕсли;
   
   КонецЦикла;

   ЭлементыФормы.ТабличноеПоле1.Колонки.Колонка1.ДанныеКартинки = "Картинка";

КонецПроцедуры

Существует также другой способ отображения картинок в табличном поле. Для этого необходимо использовать событие табличного поля ПриВыводеСтроки(). Этот способ подходит для табличных полей, отображающих как динамические списки так и статические данные. При использовании данного способа картинку необходимо устанавливать при обработке события ПриВыводеСтроки(). Приведенный ниже пример показывает типичное применение этого способа. В этом примере используется табличное поле, отображающее таблицу значений. Табличное поле содержит две колонки: колонку картинки (Колонка1) и колонку данных (Колонка2).

Таблица значений заполняется при обработке события ПередОткрытием() формы:

Копировать в буфер обмена
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)

   Перем Стр;

   // Заполнение таблицы значений
   Для Сч = 0 по 10 Цикл
      Стр = ТЗ.Добавить();
      Стр.Колонка2 = Сч;
   КонецЦикла;

КонецПроцедуры

Картинки для первой колонки устанавливаются при обработке события ПриВыводеСтроки(). Следует заметить, что в приведенном примере для демонстрации возможностей используются два метода установки картинки: используя свойство ИндексКартинки отображаемой ячейки и используя метод УстановитьКартинку().

Копировать в буфер обмена
Процедура ТабличноеПоле1ПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)

    Если ДанныеСтроки.Колонка2 = 0 Тогда
    // Установка картинки через метод УстановитьКартинку. Используется картинка.
    // из библиотеки картинок
       ОформлениеСтроки.Ячейки.Колонка1.УстановитьКартинку(БиблиотекаКартинок.Важно);
    Иначе
    // Установка картинки из коллекции. Используется индекс картинки в коллекции.
       ОформлениеСтроки.Ячейки.Колонка1.ИндексКартинки = ДанныеСтроки.Колонка2 % 10;
       ОформлениеСтроки.Ячейки.Колонка1.ОтображатьКартинку = истина;
    КонецЕсли;

КонецПроцедуры